package com.ruoyi.oto.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.entity.MemberUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.oto.domain.DemandsRecord;
import com.ruoyi.oto.domain.DemandsReply;
import com.ruoyi.oto.domain.dto.*;
import com.ruoyi.oto.domain.vo.DemandsDepartDetailVO;
import com.ruoyi.oto.domain.vo.DemandsDepartVO;
import com.ruoyi.oto.domain.vo.DemandsRecordDetailVO;

import java.util.List;

/**
 * 诉求记录服务
 *
 * @author ruoyi
 */
public interface DemandsRecordService extends IService<DemandsRecord>
{
    /**
     * 提交诉求记录
     * @param memberUser
     * @param demandsCompanyDTO
     * @return
     */
    Boolean saveDemandsRecord(MemberUser memberUser, DemandsCompanyDTO demandsCompanyDTO);

    /**
     * 审核诉求
     * @param loginUser
     * @param checkDemandsDTO
     * @return
     */
    Long checkDemands(LoginUser loginUser, CheckDemandsDTO checkDemandsDTO);

    /**
     * 小程序-分页查询诉求列表
     * @param memberUser
     * @param demandsQuryDTO
     * @return
     */
    IPage<DemandsRecord> listDemandsFront(MemberUser memberUser, DemandsQuryDTO demandsQuryDTO);

    /**
     * 小程序查看诉求审核详情
     * @param demandsId
     * @return
     */
    DemandsRecordDetailVO demandsDetail(LoginUser loginUser,Long demandsId);

    /**
     * 获取部门要审核的诉求
     * @param deptId
     * @param demandsQuryDTO
     * @return
     */
    IPage<DemandsRecord> listCheckDemands(Long deptId,DemandsQuryDTO demandsQuryDTO);
    /**
     * 后台-分页查询诉求列表
     * @param loginUser
     * @param demandsQuryDTO
     * @return
     */
    IPage<DemandsRecord> listDemandsBack(LoginUser loginUser,DemandsQuryDTO demandsQuryDTO);

    /**
     * 获取某个诉求的受理情况
     * @param loginUser
     * @param departId
     * @return
     */
    List<DemandsDepartVO> listDemandsDepartById(LoginUser loginUser, Long departId);

    /**
     * 获取我的部门待处理的诉求
     * @param loginUser
     * @param demandsQuryDTO
     * @return
     */
    IPage<DemandsDepartVO> listDemandsDepart(LoginUser loginUser, DemandsQuryDTO demandsQuryDTO);

    /**
     * 获取受理详情
     * @param acceptId
     * @return
     */
    DemandsDepartDetailVO listDemandsDepartReply(Long acceptId);

    /**
     * 后台经办答复诉求
     * @param loginUser
     * @param replyDemandsDTO
     * @return
     */
    DemandsReply replyDemandsBack(LoginUser loginUser,ReplyDemandsDTO replyDemandsDTO);

    /**
     * 后台营商中心介入审核
     * @param loginUser
     * @param ysReplyDemandsDTO
     * @return
     */
    DemandsReply ysReplyDemandsBack(LoginUser loginUser,YsReplyDemandsDTO ysReplyDemandsDTO);
}
